import java.util.ArrayList;
import java.util.Scanner;

public class BadugiCzlowiek extends BadugiGracz {
    Scanner sc = new Scanner(System.in);

    public BadugiCzlowiek(String nick)
    {
        super(nick);
    }

    public int pobierzIloscWymienionychKart()
    {
        return iloscWymienionychKart;
    }


    public ArrayList<BadugiKarta> wybierzKartyDoWymiany()
    {

        ArrayList<BadugiKarta> doWymiany = new ArrayList<>();
        String wybor;
        do {
            doWymiany.clear();

            System.out.print("Ktore karty chcesz wymienic?: ");
            wybor = sc.next();
            boolean wystapilBlad = false;
            if (wybor.contains(",") || wybor.length() == 1)
            {
                String[] indeksyKart = wybor.trim().split(",");
                indeksyKart = usunPusteElementy(indeksyKart);

                if (indeksyKart.length <= 4)
                {
                    for (String indeksString : indeksyKart)
                    {
                        if (czyCyfraOdJedenDoCztery(indeksString))
                        {
                            int indeksKarty = Integer.parseInt(indeksString);
                            doWymiany.add(reka.wezKarte(indeksKarty - 1));
                        }
                        else
                        {
                            System.out.println("Wybrana karta nie istnieje.");
                        }
                    }
                }
                else
                {
                    System.out.println("Mozesz wymienic maksymalnie 4 Karty.");
                    wystapilBlad = true;
                }
            }
            else
            {
                System.out.println("Bledny format danych.");
                wystapilBlad = true;
            }
            if (wystapilBlad)
            {
                System.out.println("Sprobuj ponownie.");
                wybor = "N";
            }
            else {
                System.out.println("Wybrales: " + BadugiKarta.pobierzListeKart(doWymiany));
                System.out.print("Zatwierdzasz wybor?: [T/N] ");
                wybor = sc.next();
            }
        } while (!wybor.equals("T"));

        // Ktore karty chcesz wymienic?: 1,2,3
        // Bledny format danych | Mozesz wymienic maskymalnie 3 karty
        // Wybrales: 1 Trelf, 2 Karo, 3 Czarne
        // Zatwierdzasz wybor?: TAK
        iloscWymienionychKart = doWymiany.size();
        return doWymiany;
    }

    private boolean czyCyfraOdJedenDoCztery(String str)
    {
        boolean czyCyfraZPrzedzialu = false;
        char[] znakiWStringu = str.toCharArray();
        if (znakiWStringu.length == 1)
        {
            char znak = znakiWStringu[0];
            czyCyfraZPrzedzialu = Character.isDigit(znak) && Character.getNumericValue(znak) > 0 &&  Character.getNumericValue(znak) < 5;
        }
        return czyCyfraZPrzedzialu;
    }

    private String[] usunPusteElementy(String[] tablica)
    {
        ArrayList<String> dynamicznaTablicaBezPustychElementow = new ArrayList<>();
        for (String str : tablica)
        {
            if (!str.isEmpty())
                dynamicznaTablicaBezPustychElementow.add(str);
        }
        String[] tablicaBezPustychElementow = new String[dynamicznaTablicaBezPustychElementow.size()];
        tablicaBezPustychElementow = dynamicznaTablicaBezPustychElementow.toArray(tablicaBezPustychElementow);

        return tablicaBezPustychElementow;
    }

    public String pobierzImie() {

        return nick;
    }


}